package jmine.tec.services.api.errorlistener;

import jmine.tec.services.api.Service;
import jmine.tec.services.api.ServiceAssertionFailedError;
import jmine.tec.services.api.ServiceExecutionException;

/**
 * Interface utilizada para listeners de erros/falhas que ocorrem durante a execução de serviços.
 * 
 * @author Rafael Volpato (Feb 21, 2008)
 * @author lundberg (refactoring 2009-08-26)
 */
public interface ServiceErrorListener {

    /**
     * Executa o tratamento quando ocorre uma falha em um serviço.
     * 
     * @param service serviço que gerou a falha
     * @param serviceAssertionFailedError falha que ocorreu
     */
    void handleServiceFailure(Service<?> service, ServiceAssertionFailedError serviceAssertionFailedError);

    /**
     * Executa o tratamento quando ocorre um erro em um serviço.
     * 
     * @param service serviço que gerou o erro
     * @param serviceExecutionException erro que ocorreu
     */
    void handleServiceError(Service<?> service, ServiceExecutionException serviceExecutionException);

    /**
     * Executa o tratamento quando ocorre um erro desconhecido em um servico.
     * 
     * @param service serviço que gerou o erro
     * @param throwable erro que ocorreu
     */
    void handleServiceThrowable(Service<?> service, Throwable throwable);
}
